#include <stdio.h>
#include <time.h>

/*
time_t  
    来表示从某个参考时间点起过去的秒数
    通常是 1970-01-01 00:00:00 UTC

通过前面的秒数可以计算出 下面结构体的内容
struct tm {
    int tm_sec;   // 秒 [0, 60]
    int tm_min;   // 分 [0, 59]
    int tm_hour;  // 小时 [0, 23]
    int tm_mday;  // 一个月中的日期 [1, 31]
    int tm_mon;   // 月份，从0开始计(0=1月, 11=12月)
    int tm_year;  // 从1900年起计算的年数，如2025年则tm_year=125
    int tm_wday;  // 一周中的第几天 [0, 6] (0=周日)
    int tm_yday;  // 一年中的第几天 [0, 365]
};
size_t strftime(char *s, size_t max, const char *format,
                       const struct tm *tm);
参数
    s   输出的位置
    max s的大小
    format  格式
    tm      时间

-   `%Y`：年份（如 2025）
-   `%m`：月份（01-12）
-   `%d`：日期（01-31）
-   `%H`：小时（00-23）
-   `%M`：分钟（00-59）
-   `%S`：秒（00-60）
-   `%a` / `%A`：周几（英文缩写/完整拼写）
*/

int main(int argc, char const *argv[])
{
    // 获取秒数  
    // 方式1
    time_t t_1 = time(NULL);
    printf("time_t = %ld\n" , t_1);

    // 方式2
    time_t t_2 = 0;
    time(&t_2);
    printf("time_t = %ld\n" , t_2);


    // 类型转换   结构体
    struct tm * tm_srt = localtime(&t_2);

    printf("%d:%d:%d\n" , tm_srt->tm_hour , tm_srt->tm_min , tm_srt->tm_sec);
    printf("%d/%d/%d\n" , tm_srt->tm_year + 1900 , tm_srt->tm_mon + 1 , tm_srt->tm_mday);

    // 字符串输出 
    // 固定格式   输入 time 
    printf("当前时间：%s\n" , ctime(&t_1));

    // 固定格式   输入 tm 结构体
    printf("当前时间：%s\n" , asctime(tm_srt));
    

    // 指定格式输出
    char buf[128];
    strftime(buf , sizeof(buf) , "%Y/%m/%d" , tm_srt);

    printf("当前时间:%s\n"  ,  buf);

    return 0;
}


